﻿using System;
using System.Collections.Generic;
using System.Text;
using DataAccessObject;
using DataTransferObject;
namespace BusinessLogicLayer
{
    public class TaoDeTuDongBLL
    {
        private List<clsChiTietBoDe> _DanhSachChiTietBoDe;
        private TaoDeTuDongDAO _taodetudongDAO;
        private string _conn;
        public TaoDeTuDongBLL(int MaDe)
        {
            Common g = new Common();
            _conn = g.conn;
            _taodetudongDAO = new TaoDeTuDongDAO(_conn);
            _DanhSachChiTietBoDe = new List<clsChiTietBoDe>();
            _taodetudongDAO.DanhSachChiTiet = _DanhSachChiTietBoDe;
            _taodetudongDAO.MaDe = MaDe;
        }
        public void RandomCauHoiDon(int socauhoi, int start, int end, int chuyenmuc)
        {
            _taodetudongDAO.TaoChiTietDe(BuildingSQL(socauhoi, start, end, 1, chuyenmuc));
        }
        public void RandomCauHoiDoanVan(int socauhoi, int start, int end, int chuyenmuc)
        {
            _taodetudongDAO.TaoChiTietDe(BuildingSQL(socauhoi, start, end, 2, chuyenmuc));
        }
        public void RandomCauHoiMp3(int socauhoi, int start, int end, int chuyenmuc)
        {
            _taodetudongDAO.TaoChiTietDe(BuildingSQL(socauhoi, start, end, 3, chuyenmuc));
        }
        public void RandomCauHoiVideo(int socauhoi, int start, int end, int chuyenmuc)
        {
            _taodetudongDAO.TaoChiTietDe(BuildingSQL(socauhoi, start, end, 4, chuyenmuc));
        }

        public void Save()
        {
            int dem = 0;
            try
            {
                ChiTietBoDeDAO chitietDAO = new ChiTietBoDeDAO(_conn);
                foreach (clsChiTietBoDe ct in _DanhSachChiTietBoDe)
                {
                    chitietDAO.ThemChiTietBoDe(ct);
                    dem++;
                }
            }
            catch (Exception)
            {
                throw new BusinessException("Xảy ra lỗi trong quá trình tạo bộ đề, có thể số câu hỏi tạo không đủ theo yêu cầu.");
            }
            finally
            {
                BoDeDAO bodeDAO = new BoDeDAO(_conn);
                // Tính thời gian của bộ đề vừa tạo và cập nhật lại
                bodeDAO.CapNhatSoCauHoi_ThoiGian(dem, bodeDAO.ThoiGianLamBai(_taodetudongDAO.MaDe), _taodetudongDAO.MaDe);
            }
        }

        public string BuildingSQL(int socauhoi, int start, int end, int loaicauhoi, int MaChuyenMuc)
        {
            return _taodetudongDAO.BuildingSQL(socauhoi, start, end, loaicauhoi, MaChuyenMuc);
        }
    }
}
